package com.clg.protobuf.util;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by chenlong on 2017/6/1.
 */
public class ConstantUtil {

	/**
	 * 请求数据类型
	 */
	public static final String CONTENT_TYPE = "Content-Type";

	/**
	 * 接受数据类型
	 */
	public static final String ACCEPT = "Accept";

	/**
	 * 请求类型：POST
	 */
	public static final String REQUEST_METHOD_TYPE_POST = "POST";

	/**
	 * 请求类型：GET
	 */
	public static final String REQUEST_METHOD_TYPE_GET = "GET";

	/**
	 * 数据传输类型：json 格式
	 */
	public static final String MEDIA_TYPE_JSON = "application/json";

	/**
	 * 数据传输类型：protobuf 格式
	 */
	public static final String MEDIA_TYPE_PROTOCOL_BUFFER = "application/x-protobuf";

	/**
	 * 数据传输类型：json 格式
	 */
	public static final String MEDIA_TYPE_JSON_URF_8 = "application/json;charset=utf-8";

	/**
	 * 数据传输类型：protobuf 格式
	 */
	public static final String MEDIA_TYPE_PROTOCOL_BUFFER_URF_8 = "application/x-protobuf;charset=utf-8";

	/**
	 * class文件磁盘根目录
	 * @return
	 */
	public static String baseClassPath() {
		String baseClassPath = ConstantUtil.class.getResource("/").toString();
		String osName = System.getProperty("os.name");
		if (osName.toLowerCase().indexOf("windows") != -1) {
			if (baseClassPath.startsWith("file:/")) {
				baseClassPath = baseClassPath.substring(6);
			}
		}
		return baseClassPath;
	}

	/**
	 * 项目根目录
	 */
	public static final String PROJECT_ROOT = System.getProperty("user.dir") + File.separator;

	/**
	 * 根据.proto 文件生成java对象包目录
	 */
	public static final String PROTOBUF_JAVA_PATH = baseClassPath() + "com/clg/protobuf/dto" + File.separator;

	/**
	 * 根据.proto 文件生成java对象包名
	 */
	public static final String PROTOBUF_PACKAGE_NAME = "com.clg.protobuf.dto";

	/**
	 * .proto 文件所在目录
	 */
	public static final String PROTOBUF_FILE_PATH = PROJECT_ROOT + "proto";

	/**
	 * 编译proto文件
	 */
	public static final String PROTOC_EXE_PATH = PROJECT_ROOT + "protoc/bin/protoc.exe";

	/**
	 * protoFile 文件
	 */
	public static List<String> protoFile = new ArrayList<String>();

	/**
	 * 获取所有的.proto文件名
	 */
	static {
		File fileDir = new File(PROTOBUF_FILE_PATH);
		File[] files = fileDir.listFiles();
		if (files.length > 0) {
			for (File file : files) {
				String fileName = file.getName();
				if (fileName.endsWith(".proto")) {
					protoFile.add(fileName);
				}
			}
		}
	}

	public static void main(String[] args) {
		System.out.println(baseClassPath());
	}
}
